/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ejercicio.practica8;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 *
 * @author manolo
 */
public class Conductores extends Thread {

    ArrayList<Conductor> listaConductores;
    Conductor c;
    static boolean ocupado = false;
    Scanner sc = new Scanner(System.in);

    public Conductores(ArrayList<Conductor> listaConductores) {
        this.listaConductores = listaConductores;
    }

    public void listar() {
        Iterator<Conductor> iterator = listaConductores.iterator();
        int i = 0;
        while (iterator.hasNext()) {
            c = iterator.next();
            System.out.println("Indice: " + (i + 1));
            System.out.println("Nombre: " + c.getNombre());
            System.out.println("Carnet: " + c.getNumCarnet());
            System.out.println("Puntos: " + c.getPuntos());
            System.out.println();
            i++;
        }
    }

    public void modificar(int i) {
        c = listaConductores.get(--i);
        System.out.println("Nombre: ");
        c.setNombre(sc.next());
        System.out.println("Carnet: ");
        c.setNumCarnet(sc.next());
        System.out.println("Puntos: ");
        c.setPuntos(sc.nextInt());
        System.out.println();
        listaConductores.set(i, c);
        System.out.println();
        System.out.println("Conductor modificado");
        System.out.println();
        System.out.println("Indice: " + (i));
        System.out.println("Nombre: " + c.getNombre());
        System.out.println("Carnet: " + c.getNumCarnet());
        System.out.println("Puntos: " + c.getPuntos());
        System.out.println();
    }

    public void eliminar(int i) {
        listaConductores.remove(--i);
    }

    @Override
    public void run() {
        int opcion, valor;
        synchronized (listaConductores) {
            while (ocupado) {
                try {
                    System.out.println("Ocupado");
                    listaConductores.wait();
                } catch (InterruptedException ex) {
                    System.out.println("Error: " + ex);
                }
            }
            ocupado = true;

            do {
                System.out.println("1.- Listar conductores");
                System.out.println("2.- Modificar conductor");
                System.out.println("3.- Eliminar conductor");
                System.out.println("0.- Salir");
                opcion = sc.nextInt();

                switch (opcion) {
                    case 1:
                        listar();
                        break;
                    case 2:
                        System.out.println("Introduzca el número de indice del conductor: ");
                        valor = sc.nextInt();
                        modificar(valor);
                        break;
                    case 3:
                        System.out.println("Introduzca el número de indice del conductor: ");
                        valor = sc.nextInt();
                        eliminar(valor);
                        break;
                    default:
                        System.out.println("Opción no válida");
                    case 0:
                        break;
                }
            } while (opcion != 0);
            ocupado = false;
        }
    }
}
